/*
	WeaponELF.h
	(c)2004 Palestar Inc, Richard Lyle
*/

#ifndef WEAPONELF_H
#define WEAPONELF_H

#include "Game/Constants.h"
#include "Game/GadgetBeamWeapon.h"



//----------------------------------------------------------------------------

class WeaponELF : public GadgetBeamWeapon
{
public:
	DECLARE_WIDGET_CLASS();

	// NounGadget interface
	Type type() const
	{
		return WEAPON_CLOSE;
	}
	int	maxDamage() const
	{
		return (2600 + (level() * 100))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}
	int	addValue() const
	{
		return 8500;
	}
	int buildTechnology() const
	{
		return 45;
	}
	int	buildCost() const
	{
		return 150;
	}
	dword buildFlags() const
	{
		return NounPlanet::FLAG_METALS;
	}
	int	buildTime() const
	{
		return 300;
	}
	// GadgetWeapon interface
	int	energyCost() const
	{
		return 3200* enhancementModifier( enhancementSystem(), NounEnhancement::MT_ENERGY );
	}
	int	energyCharge() const
	{
		return 7* enhancementModifier( enhancementSystem(), NounEnhancement::MT_COOLDOWN);
	}
	int	damage() const
	{
		return (32 + ceil (level() * 0.5))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}//Added 20
	int	damageRandom() const
	{
		return 10* enhancementModifier( enhancementSystem(), NounEnhancement::MT_DAMAGE );
	}//Added 6
	int	damageFalloff() const
	{
		return 4;
	}
	dword damageType() const
	{
		return DAMAGE_ELF;
	}
	int	duration() const
	{
		return 84 + level();
	}
	float length() const
	{
		return (120.0f + (level() * 5))* enhancementModifier( enhancementSystem(), NounEnhancement::MT_RANGE );
	}
	int repairRate() const
	{
		return 2;
	}
};

//----------------------------------------------------------------------------



#endif

//----------------------------------------------------------------------------
// EOF
